#pragma once
#ifndef _KH_CORE_SUBSYSTEM_H
#define _KH_CORE_SUBSYSTEM_H
#include <Kharlia/Core/Common.h>
#include <Kharlia/Core/ObjectBase.h>

namespace kharlia { namespace core {

/// Provides an interface for the App to tick objects
class KH_CORE_API CSubsystem: public CObject {
    KH_DECL_GC()

public:
    CSubsystem(PyObject* self): CObject(self) {}
        
    virtual void Tick(float deltaTime) {
        call_method<void>(mSelf, "Tick", deltaTime);
    }

    friend void _InitAppBindings();
};

}} // namespace kharlia::core

ENABLE_BACK_REFERENCE(kharlia::core::CSubsystem)

#endif // _KH_CORE_SUBSYSTEM_H